package homework;

import java.util.Random;
import java.util.Scanner;

/**
 * @Author Stringzhua
 * @Date 2024/3/1 10:21
 * description:猜拳游戏
 * 有个人tom设计他的成员变量，成员方法
 * 可以和电脑猜拳
 * 电脑每次随机生成0,1,2
 * 0 石头
 * 1 剪刀
 * 2 布
 * 并显示Tom的输赢次数
 */
public class homework14 {
    public static void main(String[] args) {
        Tom t = new Tom();
        //记录最后输赢分次数
        int isWinCount = 0;
        //创建二维数组,接收局数,Tom出拳情况以及电脑出拳情况
        int[][] arr1 = new int[3][3];
        int j=0;
        //创建一个一维数组,用来接收输赢情况
        String[] arr2 = new String[3];

        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {//比赛三次
            //获取玩家出拳
            System.out.println("请输入你要出的拳(0-拳头,1-剪刀,2-布):");
            int num = scanner.nextInt();
            t.setTomGuessNum(num);
            int tomGuess = t.getTomGuessNum();
            arr1[i][j + 1] = tomGuess;

            //获取电脑出的拳
            int comGuess = t.computerNum();
            arr1[i][j + 2] = comGuess;

            //将玩家猜的拳和电脑猜的拳继续比较
            String isWin=t.vsComputer();
            arr2[i]=isWin;
            arr1[i][j]=t.count;

            //对每一局的情况进行输出
            System.out.println("========");
            System.out.println("局数\t玩家出拳\t电脑出拳\t输赢情况");
            System.out.println(t.count+"\t"+tomGuess+"\t\t"+comGuess+"\t\t"+isWin);
            System.out.println("========");
            System.out.println("\n\n");
            isWinCount=t.winCount(isWin);
        }
        //对当前游戏的最终结果进行输出
        System.out.println("局数\t玩家出拳\t电脑出拳\t输赢情况");
        for (int i = 0; i < arr1.length; i++) {
            for (int k = 0; k < arr1[i].length; k++) {
                System.out.print(arr1[i][k]+"\t\t\t");
            }
            System.out.print(arr2[i]);
            System.out.println();
        }
        System.out.println("你赢了"+isWinCount+" 次");
    }
}


//Tom类
class Tom {
    //玩家出拳的类型
    int tomGuessNum;
    //电脑出拳的类型
    int comGuessNum;
    //玩家赢的次数
    int winCountNum;
    //比赛的次数
    int count = 1;//一共比赛三次
    public void showInfo() {
        //....
    }

    /*
     *电脑随机生成猜拳的数字的方法
     * @return
     * */
    public int computerNum() {
        Random r = new Random();
        comGuessNum = r.nextInt(3);//方法,返回0~2的随机数
        return comGuessNum;
    }

    /*
     * 设置玩家猜拳的数字的方法
     * */
    public void setTomGuessNum(int tomGuessNum) {
        if (tomGuessNum > 2 || tomGuessNum < 0) {
            //抛出一个异常,李同学会写,没有处理
            throw new IllegalArgumentException("数字输入错误~");
        }
        this.tomGuessNum = tomGuessNum;
    }

    public int getTomGuessNum() {
        return tomGuessNum;
    }

    /*
     * 比较猜拳的结果
     * @return 玩家赢返回true 电脑赢返回false
     * */
    public String vsComputer() {
        if (tomGuessNum == 0 && computerNum() == 1) {
            return "你赢了";
        } else if (tomGuessNum == 1 && comGuessNum == 2) {
            return "你赢了";
        } else if (tomGuessNum == 2 && comGuessNum == 0) {
            return "你赢了";
        } else if (tomGuessNum == comGuessNum) {
            return "平手";
        } else {
            return "你输了";
        }
    }
    /*
    * 记录玩家赢的次数
    * @return
    * */
    public int winCount(String s){
        count++;//控制玩的次数
        if(s.equals("你赢了")){
            winCountNum++;
        }
        return winCountNum;
    }
}
